home *** CD-ROM | disk | FTP | other *** search
-
- AbsExecBase equ 4
- _LVOOldOpenLibrary equ -408
- _LVOOpenLibrary equ -552
- _LVOCloseLibrary equ -414
- _LVOOutput equ -$3C
- _LVOWrite equ -$30
- MSG_HELLO equ 0
- LF equ 10
-
- CALL macro
- jsr _LVO\1(a6)
- endm
-
- section main,code
-
- *-------------- Startup...
-
- Begin: lea _Catalog(pc),a4 ;DT Area...
-
- move.l (AbsExecBase).w,a6
- lea DOSName(pc),a1
- CALL OldOpenLibrary ;open dos (any ver)
- move.l d0,_DOSBase-DT(a4)
-
- move.l d0,a6
- CALL Output ;get output
- move.l d0,_Output-DT(a4)
-
- lea LocaleName(pc),a1
- moveq #38,d0 ;version 38+
- move.l (AbsExecBase).w,a6
- CALL OpenLibrary ;open locale
- move.l d0,_Locale-DT(a4)
- beq.s no_local
-
- lea CatalogName(pc),a1 ;name of catalog
- suba.l a0,a0 ;no tags or lang
- suba.l a2,a2
- move.l d0,a6
- jsr -$96(a6) ;open catalog
- move.l d0,_Catalog-DT(a4)
-
- no_local:
-
- *-------------- Example call...
-
- lea HelloWorld.txt(pc),a0 ;default string
- moveq #MSG_HELLO,d0 ;string.no in catalog
- bsr.s _PutStr
-
- *-------------- Shutdown...
-
- move.l (a4),d0 ;_Catalog-DT(a4),d0
- beq.s CloseLocale
- move.l d0,a0
- move.l _Locale-DT(a4),a6
- jsr -$24(a6) ;close catalog
-
- CloseLocale: move.l _Locale-DT(a4),d0
- beq.s CloseDos
- move.l d0,a1
- move.l (AbsExecBase).w,a6
- CALL CloseLibrary ;close locale
-
- CloseDos: move.l _DOSBase-DT(a4),d0
- beq.s ExitCLI
- move.l d0,a1
- move.l (AbsExecBase).w,a6
- CALL CloseLibrary ;close dos
-
- ExitCLI: moveq #0,d0 ;return 0 for cli..
- rts
-
- ******************************************************************************
- * PutStr
- * ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
- ******************************************************************************
-
- _PutStr: move.l d0,d7
- move.l a0,a1
- move.l (a4),a0 ;_Catalog-DT(a4),a0
- move.l d7,d0
- move.l _Locale-DT(a4),a6
- jsr -$48(a6) ;GetLocaleStr
-
- move.l d0,d6
- move.l d0,a0
- .strlen: tst.b (a0)+ ;get string length
- bne.s .strlen
- subq.l #1,a0
- sub.l d0,a0
- move.l a0,d3
-
- move.l _Output-DT(a4),d1
- move.l d6,d2
- move.l _DOSBase-DT(a4),a6
- jsr _LVOWrite(a6) ;write to cli..
- rts
- DT:
- _Catalog: ds.l 1
- _Locale: ds.l 1
- _DOSBase: ds.l 1
- _Output: ds.l 1
- DOSName: dc.b 'dos.library',0
- even
- LocaleName: dc.b 'locale.library',0
- even
- CatalogName: dc.b 'hello.catalog',0
- even
- HelloWorld.txt: dc.b 'Hello World!',LF,0
- even
-